// SPDX-License-Identifier: MIT
// Copyright (C) 2018-present iced project and contributors

using Generator.Enums;
using Generator.Enums.Decoder;

namespace Generator.Decoder {
	static class DecoderTable_MVEX {
		public const string Handlers_0F = nameof(Handlers_0F);
		public const string Handlers_0F38 = nameof(Handlers_0F38);
		public const string Handlers_0F3A = nameof(Handlers_0F3A);

		public static (string name, object?[] handlers)[] CreateHandlers(GenTypes genTypes) {
			var kind = genTypes[TypeIds.MvexOpCodeHandlerKind];
			var code = genTypes[TypeIds.Code];

			var Invalid = kind[nameof(MvexOpCodeHandlerKind.Invalid)];
			var RM = kind[nameof(MvexOpCodeHandlerKind.RM)];
			var Group = kind[nameof(MvexOpCodeHandlerKind.Group)];
			var W = kind[nameof(MvexOpCodeHandlerKind.W)];
			var MandatoryPrefix2 = kind[nameof(MvexOpCodeHandlerKind.MandatoryPrefix2)];
			var EH = kind[nameof(MvexOpCodeHandlerKind.EH)];
			var M = kind[nameof(MvexOpCodeHandlerKind.M)];
			var MV = kind[nameof(MvexOpCodeHandlerKind.MV)];
			var VW = kind[nameof(MvexOpCodeHandlerKind.VW)];
			var HWIb = kind[nameof(MvexOpCodeHandlerKind.HWIb)];
			var VWIb = kind[nameof(MvexOpCodeHandlerKind.VWIb)];
			var VHW = kind[nameof(MvexOpCodeHandlerKind.VHW)];
			var VHWIb = kind[nameof(MvexOpCodeHandlerKind.VHWIb)];
			var VKW = kind[nameof(MvexOpCodeHandlerKind.VKW)];
			var KHW = kind[nameof(MvexOpCodeHandlerKind.KHW)];
			var KHWIb = kind[nameof(MvexOpCodeHandlerKind.KHWIb)];
			var VSIB = kind[nameof(MvexOpCodeHandlerKind.VSIB)];
			var VSIB_V = kind[nameof(MvexOpCodeHandlerKind.VSIB_V)];
			var V_VSIB = kind[nameof(MvexOpCodeHandlerKind.V_VSIB)];

			var invalid = new object[] { kind[nameof(MvexOpCodeHandlerKind.Invalid)] };
			var handlers = new (string name, object?[] handlers)[] {
				("handlers_Grp_0F18",
				new object[8] {
					new object[] { MandatoryPrefix2,
						new object[] { M, code[nameof(Code.MVEX_Vprefetchnta_m)] },
						invalid,
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						new object[] { M, code[nameof(Code.MVEX_Vprefetch0_m)] },
						invalid,
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						new object[] { M, code[nameof(Code.MVEX_Vprefetch1_m)] },
						invalid,
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						new object[] { M, code[nameof(Code.MVEX_Vprefetch2_m)] },
						invalid,
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						new object[] { M, code[nameof(Code.MVEX_Vprefetchenta_m)] },
						invalid,
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						new object[] { M, code[nameof(Code.MVEX_Vprefetche0_m)] },
						invalid,
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						new object[] { M, code[nameof(Code.MVEX_Vprefetche1_m)] },
						invalid,
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						new object[] { M, code[nameof(Code.MVEX_Vprefetche2_m)] },
						invalid,
						invalid,
						invalid,
					},
				}),

				("handlers_Grp_0F72",
				new object[8] {
					invalid,
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { HWIb, code[nameof(Code.MVEX_Vpsrld_zmm_k1_zmmmt_imm8)] },
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { HWIb, code[nameof(Code.MVEX_Vpsrad_zmm_k1_zmmmt_imm8)] },
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { HWIb, code[nameof(Code.MVEX_Vpslld_zmm_k1_zmmmt_imm8)] },
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,
				}),

				("handlers_Grp_0FAE",
				new object[8] {
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						invalid,
						new object[] { M, code[nameof(Code.MVEX_Clevict1_m)] },
						new object[] { M, code[nameof(Code.MVEX_Clevict0_m)] },
					},
				}),

				("handlers_Grp_0F38C6",
				new object[8] {
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { RM,
								invalid,
								new object[] { VSIB, code[nameof(Code.MVEX_Vgatherpf0hintdps_mvt_k1)] },
							},
							new object[] { RM,
								invalid,
								new object[] { VSIB, code[nameof(Code.MVEX_Vgatherpf0hintdpd_mvt_k1)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { RM,
								invalid,
								new object[] { VSIB, code[nameof(Code.MVEX_Vgatherpf0dps_mvt_k1)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { RM,
								invalid,
								new object[] { VSIB, code[nameof(Code.MVEX_Vgatherpf1dps_mvt_k1)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { RM,
								invalid,
								new object[] { VSIB, code[nameof(Code.MVEX_Vscatterpf0hintdps_mvt_k1)] },
							},
							new object[] { RM,
								invalid,
								new object[] { VSIB, code[nameof(Code.MVEX_Vscatterpf0hintdpd_mvt_k1)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { RM,
								invalid,
								new object[] { VSIB, code[nameof(Code.MVEX_Vscatterpf0dps_mvt_k1)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { RM,
								invalid,
								new object[] { VSIB, code[nameof(Code.MVEX_Vscatterpf1dps_mvt_k1)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,
				}),

				(Handlers_0F38,
				new object[0x100] {
					// 00
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 08
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 10
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 18
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { RM,
								invalid,
								new object[] { VW, code[nameof(Code.MVEX_Vbroadcastss_zmm_k1_mt)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							invalid,
							new object[] { RM,
								invalid,
								new object[] { VW, code[nameof(Code.MVEX_Vbroadcastsd_zmm_k1_mt)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { RM,
								invalid,
								new object[] { VW, code[nameof(Code.MVEX_Vbroadcastf32x4_zmm_k1_mt)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							invalid,
							new object[] { RM,
								invalid,
								new object[] { VW, code[nameof(Code.MVEX_Vbroadcastf64x4_zmm_k1_mt)] },
							},
						},
						invalid,
						invalid,
					},
					invalid,
					invalid,
					invalid,
					invalid,

					// 20
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { KHW, code[nameof(Code.MVEX_Vptestmd_kr_k1_zmm_zmmmt)] },
							invalid,
						},
						invalid,
						invalid,
					},

					// 28
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 30
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vpermd_zmm_k1_zmm_zmmmt)] },
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,

					// 38
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vpminsd_zmm_k1_zmm_zmmmt)] },
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vpminud_zmm_k1_zmm_zmmmt)] },
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vpmaxsd_zmm_k1_zmm_zmmmt)] },
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vpmaxud_zmm_k1_zmm_zmmmt)] },
							invalid,
						},
						invalid,
						invalid,
					},

					// 40
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vpmulld_zmm_k1_zmm_zmmmt)] },
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VW, code[nameof(Code.MVEX_Vgetexpps_zmm_k1_zmmmt)] },
							new object[] { VW, code[nameof(Code.MVEX_Vgetexppd_zmm_k1_zmmmt)] },
						},
						invalid,
						invalid,
					},
					invalid,
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vpsrlvd_zmm_k1_zmm_zmmmt)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vpsravd_zmm_k1_zmm_zmmmt)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vpsllvd_zmm_k1_zmm_zmmmt)] },
							invalid,
						},
						invalid,
						invalid,
					},

					// 48
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VW, code[nameof(Code.MVEX_Undoc_zmm_k1_zmmmt_512_66_0F38_W0_48)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VW, code[nameof(Code.MVEX_Undoc_zmm_k1_zmmmt_512_66_0F38_W0_49)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VW, code[nameof(Code.MVEX_Undoc_zmm_k1_zmmmt_512_66_0F38_W0_4A)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VW, code[nameof(Code.MVEX_Undoc_zmm_k1_zmmmt_512_66_0F38_W0_4B)] },
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,
					invalid,
					invalid,
					invalid,

					// 50
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vaddnps_zmm_k1_zmm_zmmmt)] },
							new object[] { VHW, code[nameof(Code.MVEX_Vaddnpd_zmm_k1_zmm_zmmmt)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vgmaxabsps_zmm_k1_zmm_zmmmt)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vgminps_zmm_k1_zmm_zmmmt)] },
							new object[] { VHW, code[nameof(Code.MVEX_Vgminpd_zmm_k1_zmm_zmmmt)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vgmaxps_zmm_k1_zmm_zmmmt)] },
							new object[] { VHW, code[nameof(Code.MVEX_Vgmaxpd_zmm_k1_zmm_zmmmt)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Undoc_zmm_k1_zmm_zmmmt_512_66_0F38_W0_54)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vfixupnanps_zmm_k1_zmm_zmmmt)] },
							new object[] { VHW, code[nameof(Code.MVEX_Vfixupnanpd_zmm_k1_zmm_zmmmt)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Undoc_zmm_k1_zmm_zmmmt_512_66_0F38_W0_56)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Undoc_zmm_k1_zmm_zmmmt_512_66_0F38_W0_57)] },
							invalid,
						},
						invalid,
						invalid,
					},

					// 58
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { RM,
								invalid,
								new object[] { VW, code[nameof(Code.MVEX_Vpbroadcastd_zmm_k1_mt)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							invalid,
							new object[] { RM,
								invalid,
								new object[] { VW, code[nameof(Code.MVEX_Vpbroadcastq_zmm_k1_mt)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { RM,
								invalid,
								new object[] { VW, code[nameof(Code.MVEX_Vbroadcasti32x4_zmm_k1_mt)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							invalid,
							new object[] { RM,
								invalid,
								new object[] { VW, code[nameof(Code.MVEX_Vbroadcasti64x4_zmm_k1_mt)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VKW, code[nameof(Code.MVEX_Vpadcd_zmm_k1_kr_zmmmt)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VKW, code[nameof(Code.MVEX_Vpaddsetcd_zmm_k1_kr_zmmmt)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VKW, code[nameof(Code.MVEX_Vpsbbd_zmm_k1_kr_zmmmt)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VKW, code[nameof(Code.MVEX_Vpsubsetbd_zmm_k1_kr_zmmmt)] },
							invalid,
						},
						invalid,
						invalid,
					},

					// 60
					invalid,
					invalid,
					invalid,
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vpblendmd_zmm_k1_zmm_zmmmt)] },
							new object[] { VHW, code[nameof(Code.MVEX_Vpblendmq_zmm_k1_zmm_zmmmt)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vblendmps_zmm_k1_zmm_zmmmt)] },
							new object[] { VHW, code[nameof(Code.MVEX_Vblendmpd_zmm_k1_zmm_zmmmt)] },
						},
						invalid,
						invalid,
					},
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Undoc_zmm_k1_zmm_zmmmt_512_66_0F38_W0_67)] },
							invalid,
						},
						invalid,
						invalid,
					},

					// 68
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VW, code[nameof(Code.MVEX_Undoc_zmm_k1_zmmmt_512_66_0F38_W0_68)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VW, code[nameof(Code.MVEX_Undoc_zmm_k1_zmmmt_512_66_0F38_W0_69)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VW, code[nameof(Code.MVEX_Undoc_zmm_k1_zmmmt_512_66_0F38_W0_6A)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VW, code[nameof(Code.MVEX_Undoc_zmm_k1_zmmmt_512_66_0F38_W0_6B)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vpsubrd_zmm_k1_zmm_zmmmt)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vsubrps_zmm_k1_zmm_zmmmt)] },
							new object[] { VHW, code[nameof(Code.MVEX_Vsubrpd_zmm_k1_zmm_zmmmt)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VKW, code[nameof(Code.MVEX_Vpsbbrd_zmm_k1_kr_zmmmt)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VKW, code[nameof(Code.MVEX_Vpsubrsetbd_zmm_k1_kr_zmmmt)] },
							invalid,
						},
						invalid,
						invalid,
					},

					// 70
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Undoc_zmm_k1_zmm_zmmmt_512_66_0F38_W0_70)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Undoc_zmm_k1_zmm_zmmmt_512_66_0F38_W0_71)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Undoc_zmm_k1_zmm_zmmmt_512_66_0F38_W0_72)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Undoc_zmm_k1_zmm_zmmmt_512_66_0F38_W0_73)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { KHW, code[nameof(Code.MVEX_Vpcmpltd_kr_k1_zmm_zmmmt)] },
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,
					invalid,
					invalid,

					// 78
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 80
					invalid,
					invalid,
					invalid,
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vscaleps_zmm_k1_zmm_zmmmt)] },
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vpmulhud_zmm_k1_zmm_zmmmt)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vpmulhd_zmm_k1_zmm_zmmmt)] },
							invalid,
						},
						invalid,
						invalid,
					},

					// 88
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 90
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { V_VSIB, code[nameof(Code.MVEX_Vpgatherdd_zmm_k1_mvt)] },
							new object[] { V_VSIB, code[nameof(Code.MVEX_Vpgatherdq_zmm_k1_mvt)] },
						},
						invalid,
						invalid,
					},
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { V_VSIB, code[nameof(Code.MVEX_Vgatherdps_zmm_k1_mvt)] },
							new object[] { V_VSIB, code[nameof(Code.MVEX_Vgatherdpd_zmm_k1_mvt)] },
						},
						invalid,
						invalid,
					},
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Undoc_zmm_k1_zmm_zmmmt_512_66_0F38_W0_94)] },
							new object[] { VHW, code[nameof(Code.MVEX_Undoc_zmm_k1_zmm_zmmmt_512_66_0F38_W1_94)] },
						},
						invalid,
						invalid,
					},
					invalid,
					invalid,
					invalid,

					// 98
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vfmadd132ps_zmm_k1_zmm_zmmmt)] },
							new object[] { VHW, code[nameof(Code.MVEX_Vfmadd132pd_zmm_k1_zmm_zmmmt)] },
						},
						invalid,
						invalid,
					},
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vfmsub132ps_zmm_k1_zmm_zmmmt)] },
							new object[] { VHW, code[nameof(Code.MVEX_Vfmsub132pd_zmm_k1_zmm_zmmmt)] },
						},
						invalid,
						invalid,
					},
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vfnmadd132ps_zmm_k1_zmm_zmmmt)] },
							new object[] { VHW, code[nameof(Code.MVEX_Vfnmadd132pd_zmm_k1_zmm_zmmmt)] },
						},
						invalid,
						invalid,
					},
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vfnmsub132ps_zmm_k1_zmm_zmmmt)] },
							new object[] { VHW, code[nameof(Code.MVEX_Vfnmsub132pd_zmm_k1_zmm_zmmmt)] },
						},
						invalid,
						invalid,
					},
					invalid,

					// A0
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VSIB_V, code[nameof(Code.MVEX_Vpscatterdd_mvt_k1_zmm)] },
							new object[] { VSIB_V, code[nameof(Code.MVEX_Vpscatterdq_mvt_k1_zmm)] },
						},
						invalid,
						invalid,
					},
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VSIB_V, code[nameof(Code.MVEX_Vscatterdps_mvt_k1_zmm)] },
							new object[] { VSIB_V, code[nameof(Code.MVEX_Vscatterdpd_mvt_k1_zmm)] },
						},
						invalid,
						invalid,
					},
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vfmadd233ps_zmm_k1_zmm_zmmmt)] },
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,
					invalid,
					invalid,

					// A8
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vfmadd213ps_zmm_k1_zmm_zmmmt)] },
							new object[] { VHW, code[nameof(Code.MVEX_Vfmadd213pd_zmm_k1_zmm_zmmmt)] },
						},
						invalid,
						invalid,
					},
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vfmsub213ps_zmm_k1_zmm_zmmmt)] },
							new object[] { VHW, code[nameof(Code.MVEX_Vfmsub213pd_zmm_k1_zmm_zmmmt)] },
						},
						invalid,
						invalid,
					},
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vfnmadd213ps_zmm_k1_zmm_zmmmt)] },
							new object[] { VHW, code[nameof(Code.MVEX_Vfnmadd213pd_zmm_k1_zmm_zmmmt)] },
						},
						invalid,
						invalid,
					},
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vfnmsub213ps_zmm_k1_zmm_zmmmt)] },
							new object[] { VHW, code[nameof(Code.MVEX_Vfnmsub213pd_zmm_k1_zmm_zmmmt)] },
						},
						invalid,
						invalid,
					},
					invalid,

					// B0
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { V_VSIB, code[nameof(Code.MVEX_Undoc_zmm_k1_mvt_512_66_0F38_W0_B0)] },
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { V_VSIB, code[nameof(Code.MVEX_Undoc_zmm_k1_mvt_512_66_0F38_W0_B2)] },
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vpmadd233d_zmm_k1_zmm_zmmmt)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vpmadd231d_zmm_k1_zmm_zmmmt)] },
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,
					invalid,

					// B8
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vfmadd231ps_zmm_k1_zmm_zmmmt)] },
							new object[] { VHW, code[nameof(Code.MVEX_Vfmadd231pd_zmm_k1_zmm_zmmmt)] },
						},
						invalid,
						invalid,
					},
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vfmsub231ps_zmm_k1_zmm_zmmmt)] },
							new object[] { VHW, code[nameof(Code.MVEX_Vfmsub231pd_zmm_k1_zmm_zmmmt)] },
						},
						invalid,
						invalid,
					},
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vfnmadd231ps_zmm_k1_zmm_zmmmt)] },
							new object[] { VHW, code[nameof(Code.MVEX_Vfnmadd231pd_zmm_k1_zmm_zmmmt)] },
						},
						invalid,
						invalid,
					},
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vfnmsub231ps_zmm_k1_zmm_zmmmt)] },
							new object[] { VHW, code[nameof(Code.MVEX_Vfnmsub231pd_zmm_k1_zmm_zmmmt)] },
						},
						invalid,
						invalid,
					},
					invalid,

					// C0
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { V_VSIB, code[nameof(Code.MVEX_Undoc_zmm_k1_mvt_512_66_0F38_W0_C0)] },
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					new object[] { Group, "handlers_Grp_0F38C6" },
					invalid,

					// C8
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VW, code[nameof(Code.MVEX_Vexp223ps_zmm_k1_zmmmt)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VW, code[nameof(Code.MVEX_Vlog2ps_zmm_k1_zmmmt)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VW, code[nameof(Code.MVEX_Vrcp23ps_zmm_k1_zmmmt)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VW, code[nameof(Code.MVEX_Vrsqrt23ps_zmm_k1_zmmmt)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vaddsetsps_zmm_k1_zmm_zmmmt)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vpaddsetsd_zmm_k1_zmm_zmmmt)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Undoc_zmm_k1_zmm_zmmmt_512_66_0F38_W0_CE)] },
							new object[] { VHW, code[nameof(Code.MVEX_Undoc_zmm_k1_zmm_zmmmt_512_66_0F38_W1_CE)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Undoc_zmm_k1_zmm_zmmmt_512_66_0F38_W0_CF)] },
							invalid,
						},
						invalid,
						invalid,
					},

					// D0
					new object[] { MandatoryPrefix2,
						new object[] { W,
							new object[] { RM,
								invalid,
								new object[] { VW, code[nameof(Code.MVEX_Vloadunpackld_zmm_k1_mt)] },
							},
							new object[] { RM,
								invalid,
								new object[] { VW, code[nameof(Code.MVEX_Vloadunpacklq_zmm_k1_mt)] },
							},
						},
						new object[] { W,
							new object[] { MV, code[nameof(Code.MVEX_Vpackstoreld_mt_k1_zmm)] },
							new object[] { MV, code[nameof(Code.MVEX_Vpackstorelq_mt_k1_zmm)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						new object[] { W,
							new object[] { RM,
								invalid,
								new object[] { VW, code[nameof(Code.MVEX_Vloadunpacklps_zmm_k1_mt)] },
							},
							new object[] { RM,
								invalid,
								new object[] { VW, code[nameof(Code.MVEX_Vloadunpacklpd_zmm_k1_mt)] },
							},
						},
						new object[] { W,
							new object[] { MV, code[nameof(Code.MVEX_Vpackstorelps_mt_k1_zmm)] },
							new object[] { MV, code[nameof(Code.MVEX_Vpackstorelpd_mt_k1_zmm)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						new object[] { W,
							new object[] { VW, code[nameof(Code.MVEX_Undoc_zmm_k1_zmmmt_512_0F38_W0_D2)] },
							invalid,
						},
						new object[] { W,
							new object[] { VW, code[nameof(Code.MVEX_Undoc_zmm_k1_zmmmt_512_66_0F38_W0_D2)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						new object[] { W,
							new object[] { VW, code[nameof(Code.MVEX_Undoc_zmm_k1_zmmmt_512_0F38_W0_D3)] },
							invalid,
						},
						invalid,
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						new object[] { W,
							new object[] { RM,
								invalid,
								new object[] { VW, code[nameof(Code.MVEX_Vloadunpackhd_zmm_k1_mt)] },
							},
							new object[] { RM,
								invalid,
								new object[] { VW, code[nameof(Code.MVEX_Vloadunpackhq_zmm_k1_mt)] },
							},
						},
						new object[] { W,
							new object[] { MV, code[nameof(Code.MVEX_Vpackstorehd_mt_k1_zmm)] },
							new object[] { MV, code[nameof(Code.MVEX_Vpackstorehq_mt_k1_zmm)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						new object[] { W,
							new object[] { RM,
								invalid,
								new object[] { VW, code[nameof(Code.MVEX_Vloadunpackhps_zmm_k1_mt)] },
							},
							new object[] { RM,
								invalid,
								new object[] { VW, code[nameof(Code.MVEX_Vloadunpackhpd_zmm_k1_mt)] },
							},
						},
						new object[] { W,
							new object[] { MV, code[nameof(Code.MVEX_Vpackstorehps_mt_k1_zmm)] },
							new object[] { MV, code[nameof(Code.MVEX_Vpackstorehpd_mt_k1_zmm)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						new object[] { W,
							new object[] { VW, code[nameof(Code.MVEX_Undoc_zmm_k1_zmmmt_512_0F38_W0_D6)] },
							invalid,
						},
						new object[] { W,
							new object[] { VW, code[nameof(Code.MVEX_Undoc_zmm_k1_zmmmt_512_66_0F38_W0_D6)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						new object[] { W,
							new object[] { VW, code[nameof(Code.MVEX_Undoc_zmm_k1_zmmmt_512_0F38_W0_D7)] },
							invalid,
						},
						invalid,
						invalid,
						invalid,
					},

					// D8
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// E0
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// E8
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// F0
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// F8
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
				}),

				(Handlers_0F3A,
				new object[0x100] {
					// 00
					invalid,
					invalid,
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHWIb, code[nameof(Code.MVEX_Valignd_zmm_k1_zmm_zmmmt_imm8)] },
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,
					invalid,
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VWIb, code[nameof(Code.MVEX_Vpermf32x4_zmm_k1_zmmmt_imm8)] },
							invalid,
						},
						invalid,
						invalid,
					},

					// 08
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 10
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 18
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { KHWIb, code[nameof(Code.MVEX_Vpcmpud_kr_k1_zmm_zmmmt_imm8)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { KHWIb, code[nameof(Code.MVEX_Vpcmpd_kr_k1_zmm_zmmmt_imm8)] },
							invalid,
						},
						invalid,
						invalid,
					},

					// 20
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VWIb, code[nameof(Code.MVEX_Vgetmantps_zmm_k1_zmmmt_imm8)] },
							new object[] { VWIb, code[nameof(Code.MVEX_Vgetmantpd_zmm_k1_zmmmt_imm8)] },
						},
						invalid,
						invalid,
					},
					invalid,

					// 28
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 30
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 38
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 40
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 48
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 50
					invalid,
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VWIb, code[nameof(Code.MVEX_Vrndfxpntps_zmm_k1_zmmmt_imm8)] },
							new object[] { VWIb, code[nameof(Code.MVEX_Vrndfxpntpd_zmm_k1_zmmmt_imm8)] },
						},
						invalid,
						invalid,
					},
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 58
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 60
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 68
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 70
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 78
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 80
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 88
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 90
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 98
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// A0
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// A8
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// B0
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// B8
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// C0
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// C8
					invalid,
					invalid,
					new object[] { MandatoryPrefix2,
						new object[] { W,
							new object[] { VWIb, code[nameof(Code.MVEX_Vcvtfxpntudq2ps_zmm_k1_zmmmt_imm8)] },
							invalid,
						},
						new object[] { W,
							new object[] { VWIb, code[nameof(Code.MVEX_Vcvtfxpntps2udq_zmm_k1_zmmmt_imm8)] },
							invalid,
						},
						invalid,
						new object[] { W,
							invalid,
							new object[] { VWIb, code[nameof(Code.MVEX_Vcvtfxpntpd2udq_zmm_k1_zmmmt_imm8)] },
						},
					},
					new object[] { MandatoryPrefix2,
						new object[] { W,
							new object[] { VWIb, code[nameof(Code.MVEX_Vcvtfxpntdq2ps_zmm_k1_zmmmt_imm8)] },
							invalid,
						},
						new object[] { W,
							new object[] { VWIb, code[nameof(Code.MVEX_Vcvtfxpntps2dq_zmm_k1_zmmmt_imm8)] },
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,
					invalid,
					invalid,
					invalid,

					// D0
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VWIb, code[nameof(Code.MVEX_Undoc_zmm_k1_zmmmt_imm8_512_66_0F3A_W0_D0)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VWIb, code[nameof(Code.MVEX_Undoc_zmm_k1_zmmmt_imm8_512_66_0F3A_W0_D1)] },
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// D8
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// E0
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						invalid,
						invalid,
						new object[] { W,
							invalid,
							new object[] { VWIb, code[nameof(Code.MVEX_Vcvtfxpntpd2dq_zmm_k1_zmmmt_imm8)] },
						},
					},
					invalid,

					// E8
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// F0
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// F8
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
				}),

				(Handlers_0F,
				new object[0x100] {
					// 00
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 08
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 10
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 18
					new object[] { Group, "handlers_Grp_0F18" },
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 20
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 28
					new object[] { MandatoryPrefix2,
						new object[] { W,
							new object[] { VW, code[nameof(Code.MVEX_Vmovaps_zmm_k1_zmmmt)] },
							invalid,
						},
						new object[] { W,
							invalid,
							new object[] { VW, code[nameof(Code.MVEX_Vmovapd_zmm_k1_zmmmt)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						new object[] { W,
							new object[] { MV, code[nameof(Code.MVEX_Vmovaps_mt_k1_zmm)] },
							invalid,
						},
						new object[] { W,
							invalid,
							new object[] { MV, code[nameof(Code.MVEX_Vmovapd_mt_k1_zmm)] },
						},
						new object[] { W,
							invalid,
							new object[] { EH,
								new object[] { MV, code[nameof(Code.MVEX_Vmovnrapd_m_k1_zmm)] },
								new object[] { MV, code[nameof(Code.MVEX_Vmovnrngoapd_m_k1_zmm)] },
							},
						},
						new object[] { W,
							new object[] { EH,
								new object[] { MV, code[nameof(Code.MVEX_Vmovnraps_m_k1_zmm)] },
								new object[] { MV, code[nameof(Code.MVEX_Vmovnrngoaps_m_k1_zmm)] },
							},
							invalid,
						},
					},
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 30
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 38
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 40
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 48
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 50
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 58
					new object[] { MandatoryPrefix2,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vaddps_zmm_k1_zmm_zmmmt)] },
							invalid,
						},
						new object[] { W,
							invalid,
							new object[] { VHW, code[nameof(Code.MVEX_Vaddpd_zmm_k1_zmm_zmmmt)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vmulps_zmm_k1_zmm_zmmmt)] },
							invalid,
						},
						new object[] { W,
							invalid,
							new object[] { VHW, code[nameof(Code.MVEX_Vmulpd_zmm_k1_zmm_zmmmt)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2,
						new object[] { W,
							new object[] { VW, code[nameof(Code.MVEX_Vcvtps2pd_zmm_k1_zmmmt)] },
							invalid,
						},
						new object[] { W,
							invalid,
							new object[] { VW, code[nameof(Code.MVEX_Vcvtpd2ps_zmm_k1_zmmmt)] },
						},
						invalid,
						invalid,
					},
					invalid,
					new object[] { MandatoryPrefix2,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vsubps_zmm_k1_zmm_zmmmt)] },
							invalid,
						},
						new object[] { W,
							invalid,
							new object[] { VHW, code[nameof(Code.MVEX_Vsubpd_zmm_k1_zmm_zmmmt)] },
						},
						invalid,
						invalid,
					},
					invalid,
					invalid,
					invalid,

					// 60
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { KHW, code[nameof(Code.MVEX_Vpcmpgtd_kr_k1_zmm_zmmmt)] },
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,

					// 68
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VW, code[nameof(Code.MVEX_Vmovdqa32_zmm_k1_zmmmt)] },
							new object[] { VW, code[nameof(Code.MVEX_Vmovdqa64_zmm_k1_zmmmt)] },
						},
						invalid,
						invalid,
					},

					// 70
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VWIb, code[nameof(Code.MVEX_Vpshufd_zmm_k1_zmmmt_imm8)] },
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,
					new object[] { Group, "handlers_Grp_0F72" },
					invalid,
					invalid,
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { KHW, code[nameof(Code.MVEX_Vpcmpeqd_kr_k1_zmm_zmmmt)] },
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,

					// 78
					invalid,
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						invalid,
						new object[] { W,
							new object[] { VW, code[nameof(Code.MVEX_Vcvtudq2pd_zmm_k1_zmmmt)] },
							invalid,
						},
						invalid,
					},
					invalid,
					invalid,
					invalid,
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { MV, code[nameof(Code.MVEX_Vmovdqa32_mt_k1_zmm)] },
							new object[] { MV, code[nameof(Code.MVEX_Vmovdqa64_mt_k1_zmm)] },
						},
						invalid,
						invalid,
					},

					// 80
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 88
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 90
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 98
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// A0
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// A8
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					new object[] { Group, "handlers_Grp_0FAE" },
					invalid,

					// B0
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// B8
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// C0
					invalid,
					invalid,
					new object[] { MandatoryPrefix2,
						new object[] { W,
							new object[] { KHWIb, code[nameof(Code.MVEX_Vcmpps_kr_k1_zmm_zmmmt_imm8)] },
							invalid,
						},
						new object[] { W,
							invalid,
							new object[] { KHWIb, code[nameof(Code.MVEX_Vcmppd_kr_k1_zmm_zmmmt_imm8)] },
						},
						invalid,
						invalid,
					},
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// C8
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// D0
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// D8
					invalid,
					invalid,
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vpandd_zmm_k1_zmm_zmmmt)] },
							new object[] { VHW, code[nameof(Code.MVEX_Vpandq_zmm_k1_zmm_zmmmt)] },
						},
						invalid,
						invalid,
					},
					invalid,
					invalid,
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vpandnd_zmm_k1_zmm_zmmmt)] },
							new object[] { VHW, code[nameof(Code.MVEX_Vpandnq_zmm_k1_zmm_zmmmt)] },
						},
						invalid,
						invalid,
					},

					// E0
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						invalid,
						new object[] { W,
							new object[] { VW, code[nameof(Code.MVEX_Vcvtdq2pd_zmm_k1_zmmmt)] },
							invalid,
						},
						invalid,
					},
					invalid,

					// E8
					invalid,
					invalid,
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vpord_zmm_k1_zmm_zmmmt)] },
							new object[] { VHW, code[nameof(Code.MVEX_Vporq_zmm_k1_zmm_zmmmt)] },
						},
						invalid,
						invalid,
					},
					invalid,
					invalid,
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vpxord_zmm_k1_zmm_zmmmt)] },
							new object[] { VHW, code[nameof(Code.MVEX_Vpxorq_zmm_k1_zmm_zmmmt)] },
						},
						invalid,
						invalid,
					},

					// F0
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// F8
					invalid,
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vpsubd_zmm_k1_zmm_zmmmt)] },
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,
					invalid,
					invalid,
					new object[] { MandatoryPrefix2,
						invalid,
						new object[] { W,
							new object[] { VHW, code[nameof(Code.MVEX_Vpaddd_zmm_k1_zmm_zmmmt)] },
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,
				}),
			};
			return handlers;
		}
	}
}
